/*
 * Classe 
 *        ProdutoLista.java
 */

package inventario.regras;

import java.io.IOException;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedReader;
import java.io.BufferedWriter;

import java.util.ArrayList;
import java.util.Iterator;

/**
 * @author mdneto
 */
public class ProdutoLista {
    private int posicao;
    private ArrayList<Produto> listaProduto;
    private final String nomeArquivo = "c://inventario.dat";
    
    public ProdutoLista(){
        listaProduto = new ArrayList<Produto>();
        try {
            this.arquivoParaArrayList();
            posicao = listaProduto.isEmpty()? -1: 0;
        }
        catch (IOException e){            
        }
    }
    
    public int quantidade(){
        return listaProduto.size();
    }
    
    public void arrayListParaArquivo() throws IOException{
        BufferedWriter arquivo;
        Iterator<Produto> interador;
        
        arquivo = new BufferedWriter(new FileWriter(new File(nomeArquivo)));
        interador = listaProduto.iterator();
        
        while ( interador.hasNext() ) {
            arquivo.append( interador.next().produtoParaTexto() );
        }
        
        arquivo.flush();
        arquivo.close();
    }
    
    public void arquivoParaArrayList() throws IOException {
        boolean temRegistro;
        String linhaArquivo;
        BufferedReader arquivo;
        
        arquivo = new BufferedReader(new FileReader(new File(nomeArquivo)));
        
        temRegistro = true;
        while (temRegistro) {
            linhaArquivo = arquivo.readLine();
            listaProduto.add( new Produto(linhaArquivo) );
            temRegistro = (linhaArquivo == null);
        }
        arquivo.close();
    }
    
    public boolean listaVazia() {
        return listaProduto.isEmpty();
    }
    
    public void incluirLista(Produto novoItem) {
        listaProduto.add(novoItem);
        posicao = listaProduto.size();
    }
    
    public Produto mostraItem(int i) {
        if ( (!listaProduto.isEmpty()) || (i > listaProduto.size() - 1) )
            return listaProduto.get(i);
        else
            return null;
    }
    
    public ArrayList<Produto> getListaProduto(){
        return listaProduto;
    }
}
